package com.shujia.mr.partition;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * 需求：
 *      将学生的性别区分开，并且写出到两个结果文件中
 *
 * Map阶段：
 *      1.通过Map函数读取学生的基本信息数据
 *      2.将数据进行切分，将数据包装成一个学生对象
 *      3.直接将学生对象写出至reduce端
 *
 * 自定义分区：
 *      1.由于Map函数写出时，会调用collector.collect函数设置分区
 *      2.在自定义分区类中设置分区规则
 *
 * reduce阶段：
 *      1.接收Map端输出的数据，再将数据写出至文件中，不需要做任何处理
 *
 */
public class MyPartitionMapper extends Mapper<LongWritable, Text,Text,Student> {
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Student>.Context context) throws IOException, InterruptedException {
        String[] columns = value.toString().split(",");
        context.write(new Text(columns[0]),new Student(columns[0],columns[1],columns[2],columns[3],columns[4]));
    }
}
